import sys, os, io; input = io.BytesIO(os.read(0, os.fstat(0).st_size)).readline n, q, m = map(int, input().split()); r = [*map(int, input().split())]; t = [*map(int, input().split())]; J = [[None]*18 for _ in range(n)]; p = 0; S = [t[0]]; b = n-1; T = [t[-1]+1] for i in range(n): while p+1 < n and r[p+1]-r[i] <= m: p += 1 J[i][0] = p for i in range(1, n): S.append(min(t[i], S[-1])) for i in range(1, 18): for j in range(n): J[j][i] = J[J[j][i-1]][i-1] def f(x, y): if x > y: return f(y, x) if J[x][17] < y: return 10**18 z = 1 for i in range(17, -1, -1): if J[x][i] < y: z += 1<